IF exists(SELECT * FROM dbo.sysobjects WHERE name='fl_VulHulptabel' AND xtype='P') 
BEGIN
	DROP PROCEDURE fl_VulHulptabel
END
GO

CREATE    procedure fl_VulHulptabel 
(@klas varchar(5),
 @ditJaar int,
 @semester int)
as
set nocount on

delete from fl_toetsLlnInvoerHulptabel

-- Berekening vorig jaar
declare @tekstDitJaar varchar(4)
declare @tekstVorigJaar varchar(4)
set @tekstDitJaar = convert(varchar(4),@ditJaar)
set @tekstVorigJaar = convert(varchar(4),@ditJaar - 1)

-- Invoer van de namen van de leerlingen en de waarschuwingen vorig schooljaar

insert into fl_toetsLlnInvoerHulptabel(inschrijvingsNr,leerlingNaam,klas,waarschuwingen)
select l.inschrijvingsNr,l.voornaam + ' ' + l.achternaam,l.klas,b.waarschuwing
from leerlingen..leerlingen as l
  left join 
    (select * from studiegegevens..fl_waarschuwingPlakken(@ditJaar) 
	) as b
  on l.inschrijvingsNr = b.inschrijvingsNr
  where l.klas = @klas
order by l.klasNr

-- Invoer van de tekorten met kerstmis met behulp van een cursor

declare @iNr char(7)
declare @vakcode char(2)
if (@semester > 1)
begin
  declare deCursor cursor local for
  select inschrijvingsNr,vakcode
  from studiegegevens..loopbaan
  where (tot1 > -1) and
	  (tot1 < 50) 
     	    and (jaar = @tekstDitJaar) 
        	and (inschrijvingsNr in 
			(select inschrijvingsNr from fl_toetsLlnInvoerHulptabel))
  order by inschrijvingsNr
  for read only

  open deCursor
  fetch next from deCursor into @iNr, @vakcode
  while (@@fetch_status=0)
    begin
--        print @vakcode
        update fl_toetsLlnInvoerHulptabel  
               set tekortenExKerstmis = isNull(tekortenExKerstmis,'') + isNull(@vakcode,'')    
               where inschrijvingsNr = @iNr
        fetch next from deCursor into @iNr, @vakCode
    end
  close deCursor
  deallocate deCursor
end
else update fl_toetsLlnInvoerHulptabel set tekortenExKerstmis = ''

-----------------------------------------
-- Invoer van de gegevens van de vakken
-----------------------------------------

-- Veranderlijken 

declare @vakVolgNr int
declare @maxTaak int
declare @minToets int
declare @taak int
declare @toets int
declare @vak varchar(5)
declare @sqlZin varchar(5000)


-- Hulptabel #vakken. Deze dient als basis voor de vakgegevens

create  table #vakken(volgNr int identity, vak char(2))

insert into #vakken(vak)
select distinct Vak 
   from fl_toetsVakKenmerken
   where (semester = @semester)
	and (Klas = @klas)
	and ((maxTaak > 0)
		or (minToets > 0))

-- Invoer van de naam van de vakken en de maxima en minima per vak.

declare deCursor cursor local for
select t.vak, isNull(t.maxTaak,0),isNull(t.minToets,0)
from #vakken as v
  left join (select * from fl_toetsVakKenmerken
                  where semester = @semester
		  and klas = @klas) as t
      on (t.vak = v.vak) 
order by v.vak
for read only


open deCursor
set @vakVolgNr = 1
fetch next from deCursor into @vakCode,@maxTaak, @minToets
while (@@fetch_status=0)
  begin
      set @vak = 'V' + convert(varchar(5),@vakVolgNr)
      set @SQLZin = 'update fl_toetsLlnInvoerHulptabel   ' +
         ' set ' + @vak + 'naam = '''
		+ @vakCode + '''' + 
         ', ' + @vak + 'maxTaak = ''' 
		+ convert(varchar(3),@maxTaak) + '''' +
	 ', ' + @vak + 'minToets = ''' 
		+ convert(varchar(3),@minToets) + ''''
      execute(@SQLZin)
      set @vakVolgNr = @vakVolgNr + 1
      fetch next from deCursor into @vakCode,@maxTaak, @minToets
  end   
close deCursor
deallocate deCursor


-- maxTaken en minToetsen

declare deCursor cursor local for
select isNull(sum(maxTaak),0),isNull(sum(minToets),0)
 from fl_toetsVakKenmerken
                  where semester = @semester
		  and klas = @klas
		  and ((maxTaak > 0)
			or (minToets > 0))
for read only


open deCursor
set @vakVolgNr = 1
fetch next from deCursor into @maxTaak, @minToets
if (@@fetch_status=0)
  begin
    update fl_toetsLlnInvoerHulptabel  
           set maxTaken = @maxTaak,
	       mintoetsen = @mintoets
  end   
close deCursor
deallocate deCursor

-- Invoer van de gegevens uit de inschrijvingstabel
--update AANTALTAAK en update AANTALTOETS

declare deCursor cursor local for
select v.volgNr, t.inschrijvingsNr,t.Taak,t.Toets
from #vakken as v
  left join (select * from fl_toetsLlnInschrijving
                  where periode = 1 and semester = @semester) as t
      on (t.vak = v.vak) 
  where not((t.taak is Null) and (t.toets is Null))
for read only

open deCursor
fetch next from deCursor into @vakVolgNr,@iNr,@Taak, @Toets
while (@@fetch_status=0)
  begin
      set @vak = 'V' + convert(varchar(2),@vakVolgNr)
      set @SQLZin = 'update fl_toetsLlnInvoerHulptabel   ' +
      ' set ' + @vak + 'Taak1 = ''' + convert(varchar(3),isNull(@Taak,'')) + ''', ' +
      @vak + 'Toets1 = ''' + convert(varchar(3),isNull(@Toets,'')) + '''' +
      ' where inschrijvingsNr = ''' + @iNr + ''''

--      print(@SQLzin)	
      execute(@SQLZin)
      fetch next from deCursor into @vakVolgNr,@iNr,@Taak, @Toets
  end   
close deCursor
deallocate deCursor


declare deCursor cursor local for
select v.volgNr, t.inschrijvingsNr,t.Taak,t.Toets
from #vakken as v
  left join (select * from fl_toetsLlnInschrijving
                  where periode = 2 and semester = @semester) as t
      on (t.vak = v.vak) 
  where not((t.taak is Null) and (t.toets is Null))
for read only

open deCursor
fetch next from deCursor into @vakVolgNr,@iNr,@Taak, @Toets
while (@@fetch_status=0)
  begin
      set @vak = 'V' + convert(varchar(2),@vakVolgNr)
      set @SQLZin = 'update fl_toetsLlnInvoerHulptabel   ' +
      ' set ' + @vak + 'Taak2 = ''' + convert(varchar(3),isNull(@Taak,'')) + ''', ' +
      @vak + 'Toets2 = ''' + convert(varchar(3),isNull(@Toets,'')) + '''' +
      ' where inschrijvingsNr = ''' + @iNr + ''''

--      print(@SQLzin)	
      execute(@SQLZin)
      fetch next from deCursor into @vakVolgNr,@iNr,@Taak, @Toets
  end   
close deCursor
deallocate deCursor


declare deCursor cursor local for
select v.volgNr, t.inschrijvingsNr,t.Taak,t.Toets
from #vakken as v
  left join (select * from fl_toetsLlnInschrijving
                  where periode = 3 and semester = @semester) as t
      on (t.vak = v.vak) 
  where not((t.taak is Null) and (t.toets is Null))
for read only

open deCursor
fetch next from deCursor into @vakVolgNr,@iNr,@Taak, @Toets
while (@@fetch_status=0)
  begin
      set @vak = 'V' + convert(varchar(2),@vakVolgNr)
      set @SQLZin = 'update fl_toetsLlnInvoerHulptabel   ' +
      ' set ' + @vak + 'Taak3 = ''' + convert(varchar(3),isNull(@Taak,'')) + ''', ' +
      @vak + 'Toets3 = ''' + convert(varchar(3),isNull(@Toets,'')) + '''' +
      ' where inschrijvingsNr = ''' + @iNr + ''''

--      print(@SQLzin)	
      execute(@SQLZin)
      fetch next from deCursor into @vakVolgNr,@iNr,@Taak, @Toets
  end   
close deCursor
deallocate deCursor